package Day12.List;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName Arraylist
 * @date 2022年07月08日 13:39
 * @Description: Arraylist集合的特点
 */



import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * list接口中常有的索引的方法（特有）
 *      public void add(int index. E element): 将指定的元素,添加到该集合中的指定位置上。
 *
 *      public E get (int index):返回集合中指定位置的元索。
 *
 *      public E remove(int index):移除列表中指定位置的元素。返回的是被移除的元素。
 *
 *      public E set(int index，E element):用指定元素昔换集合中指定位置的元素,返回值的更新前的元素。
 *
 * 注意：
 *  操作索引的时候，一定要防止索引越界异常。
 *  IndexOutOfBoundsException: 集合一般情况下会有这个错误
 *
 *
 */
public class ArraylistDemo {
    public static void main(String[] args) {
        //创建一个list集合
       List<String> list = new ArrayList<>();
       //使用add方法往集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d.txt");
        list.add("a");
        //打印输出集合
        System.out.println(list);//[a, b, c, d.txt, a]，不死地址，重写了Srtring方法

        //在c和d之间添加元素
        list.add(3,"666");
        System.out.println(list);
        //移除元素
        String removeEE = list.remove(2);
        System.out.println("移除的元素是："+removeEE);
        System.out.println(list);


        //替换元素
        String setE = list.set(4, "A");
        System.out.println(list);
        
        //便利list
        //使用普通的循环
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }

        System.out.println("=================");

        //使用迭代器
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
        System.out.println("==================");
        //使用增强for
        for (String s : list) {
            System.out.println(s);
        }

        list.get(5);//IndexOutOfBoundsException: Index: 5,
        //越界异常
    }
}
